encyklopedia.space

mod_authnz_file

mod_authnz_file – moduł serwera Apache HTTP Server odpowiedzialny za uwierzytelnianie (authentication) oraz autoryzację (authorization) użytkowników przy użyciu prostych plików tekstowych. Moduł ten jest częścią rodziny mod_authnz i działa w połączeniu z innymi komponentami systemu kontroli dostępu, takimi jak mod_auth_basic czy mod_auth_digest.

Historia

Moduł mod_authnz_file po raz pierwszy pojawił się w wersji 2.0 serwera Apache, wydanej w 1999 roku. Wcześniej uwierzytelnianie i autoryzacja realizowano wyłącznie przy pomocy mod_auth oraz mod_auth_dbm. Wprowadzenie mod_authnz_file umożliwiło administratorom prostsze zarządzanie listami użytkowników przy pomocy zwykłych plików tekstowych, co znacznie ułatwiło konfigurację małych i średnich serwisów internetowych.

Podstawowe funkcje

  • Weryfikacja tożsamości użytkownika na podstawie nazwy użytkownika i hasła przechowywanego w pliku .htpasswd lub innym pliku konfiguracyjnym.
  • Sprawdzanie przynależności użytkownika do określonych grup przy użyciu pliku .htgroup.
  • Obsługa standardowych algorytmów haszowania, takich jak MD5, SHA1 czy bcrypt.
  • Możliwość definiowania indywidualnych reguł autoryzacji przy użyciu dyrektyw Require.

Konfiguracja

Moduł jest zazwyczaj włączany w pliku konfiguracyjnym httpd.conf lub w lokalnych plikach .htaccess za pomocą dyrektywy LoadModule:

LoadModule authnz_file_module modules/mod_authnz_file.so

Następnie w obrębie dyrektywy <Directory> lub <Location> definiuje się zasady uwierzytelniania i autoryzacji:

<Directory "/var/www/secure">
    AuthType Basic
    AuthName "Restricted Area"
    AuthUserFile /etc/apache2/.htpasswd
    AuthGroupFile /etc/apache2/.htgroup
    Require valid-user
</Directory>

W powyższym przykładzie:

  • AuthType Basic określa metodę uwierzytelniania.
  • AuthName definiuje tekst wyświetlany w oknie logowania.
  • AuthUserFile wskazuje plik zawierający pary użytkownik:hasło.
  • AuthGroupFile wskazuje plik grup, w którym określa się członkostwo w grupach.
  • Require valid-user wymaga, by każdy zarejestrowany użytkownik uzyskał dostęp.

Plik .htpasswd

Plik ten może być generowany przy pomocy narzędzia htpasswd, które jest dostarczane razem z Apache. Przykładowe polecenie tworzące nowego użytkownika:

htpasswd -c /etc/apache2/.htpasswd janek

Po uruchomieniu programu zostanie poproszony o podanie hasła, które zostanie zapisane w zaszyfrowanej formie.

Plik .htgroup

Struktura pliku grup jest prosta: każda linia definiuje jedną grupę i listę jej członków oddzielonych spacjami.

admin: janek admi
redaktorzy: anna piotr

Po zdefiniowaniu grup można stosować bardziej szczegółowe reguły typu:

Require group admin

Powiązane moduły

W ekosystemie Apache istnieje szereg modułów współpracujących z mod_authnz_file:

  • mod_auth_basic – implementuje podstawowy protokół uwierzytelniania HTTP.
  • mod_auth_digest – zapewnia uwierzytelnianie oparte na haśle digesta, bardziej odporne na podsłuchiwanie.
  • mod_authn_core – definiuje podstawowy interfejs uwierzytelniania dla wszystkich modułów.
  • mod_authz_core – definiuje podstawowy interfejs autoryzacji.
  • mod_authnz_ldap – umożliwia uwierzytelnianie i autoryzację przy użyciu katalogu LDAP.

Bezpieczeństwo

Chociaż mod_authnz_file jest prosty w użyciu, istnieją pewne ograniczenia bezpieczeństwa:

  • Pliki .htpasswd i .htgroup muszą być chronione przed nieautoryzowanym dostępem na poziomie systemu operacyjnego.
  • Używanie algorytmów szyfrowania przestarzałych (np. crypt) nie jest zalecane – lepiej wybrać bcrypt lub SHA256.
  • Dla dużych serwisów zaleca się migrację do bardziej skalowalnych rozwiązań, takich jak mod_authnz_ldap lub mod_auth_openidc.

Zobacz także